package com.bbva.general.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import com.bbva.general.dao.ArchivoCargaDAO;
import com.bbva.general.dao.jdbc.ArchivoCargaDAOActualizar;
import com.bbva.general.entities.ArchivoCarga;
import com.ibm.mq.jms.services.Logger;

public class ArchivoCargaDAOImpl implements ArchivoCargaDAO {
	DataSource dataSource;
	JdbcTemplate dbo;

	//Logger log = Logger.getLogger(this.getClass());
	public DataSource getDataSource() {
		return dataSource;
	}

	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	public void Actualizar(ArchivoCarga obj) {
		try {
			ArchivoCargaDAOActualizar sp = new ArchivoCargaDAOActualizar(
					dataSource);
			sp.Actualizar(obj);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//log.info("Se cambio la ruta satisfactoriamente");
	}

	public List<Map<String, Object>> ListarArchivos() {
		dbo = new JdbcTemplate(dataSource);
		final List<Map<String, Object>> resultado;
		String sql = "SELECT idarchivo, nombre_archivo, "
				+ "extension_archivo, minuto_ejecucion, "
				+ "hora_ejecucion, dia_mes_ejecucion, "
				+ "mes_ejecucion, dia_semana_ejecucion, "
				+ "estado, usuario_creacion, fecha_creacion, "
				+ "usuario_modificacion, fecha_modificacion, "
				+ "descripcion_archivo, ruta_archivo " + "FROM IITG.archivo_carga";
		resultado = dbo.queryForList(sql);
		return resultado;
	}

	public ArchivoCarga obtener(int strIdArchivo) {
		String valIdArchivo=String.valueOf(strIdArchivo);
		dbo = new JdbcTemplate(dataSource);
		ArchivoCarga resultado;
		String sql = "SELECT idarchivo, nombre_archivo, "
				+ "extension_archivo, minuto_ejecucion, "
				+ "hora_ejecucion, dia_mes_ejecucion, "
				+ "mes_ejecucion, dia_semana_ejecucion, "
				+ "descripcion_archivo, ruta_archivo " + "FROM IITG.archivo_carga "
				+ "WHERE idarchivo = ? ";
		resultado = dbo.queryForObject(sql, new MapArchivo(), strIdArchivo);
		
		return resultado;
	}

}

class MapArchivo implements RowMapper<ArchivoCarga> {

	public ArchivoCarga mapRow(ResultSet rs, int rowNum) throws SQLException {
		ArchivoCarga obj = new ArchivoCarga();
		obj.setIdArchivo(rs.getString("idarchivo"));
		obj.setNombreArchivo(rs.getString("nombre_archivo"));
		obj.setExtensionArchivo(rs.getString("extension_archivo"));
		obj.setMinutoEjecucion(rs.getString("minuto_ejecucion"));
		obj.setHoraEjecucion(rs.getString("hora_ejecucion"));
		obj.setDiaMesEjecucion(rs.getString("dia_mes_ejecucion"));
		obj.setMesEjecucion(rs.getString("mes_ejecucion"));
		obj.setDiaSemanaEjecucion(rs.getString("dia_semana_ejecucion"));		
		obj.setDescripcionArchivo(rs.getString("descripcion_archivo"));
		obj.setRutaArchivo(rs.getString("ruta_archivo"));		
		return obj;
	}

}
